package com.hundsun.documentripper.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hundsun.documentripper.domain.pojo.File;
import com.hundsun.documentripper.domain.query.FileQuery;

/**
 * Note：
 *
 * @author ：mengjw
 * @description：文件接口
 * @date ：Created in 2021/1/26
 */
public interface FileService {

    /**
     * 新增文件
     *
     * @param file
     * @return
     */
    File insertFile(File file);

    /**
     * 更新文件对象
     *
     * @param file
     */
    void updateFile(File file);

    /**
     * 根据唯一标识获取文件对象
     *
     * @param uuid
     * @return
     */
    File getFileById(String uuid);

    /**
     * 根据唯一标识删除文件对象
     *
     * @param uuid
     */
    void deleteFile(String uuid);

    /**
     * 获取对应产品版本的最新文件列表
     *
     * @param productVersionUuid
     * @return
     */
    List getFileListByVersion(String productVersionUuid);

    /**
     * 分页获取对应产品版本的最新文件列表
     *
     * @param fileQuery
     * @return
     */
    IPage getFileListByVersionByPage(FileQuery fileQuery);

    /**
     * 备份文件到历史表
     *
     * @param uuid
     */
    void backupFile(String uuid);

    /**
     * 根据产品版本从历史表恢复到当前表
     *
     * @param productVersionUuid
     */
    void recoverFile(String productVersionUuid);

    /**
     * 使用新文件替代旧文件
     *
     * @param file
     */
    void newFile(File file);

    /**
     * 根据产品版本的删除文件
     *
     * @param productVersionUuid
     * @return
     */
    void deleteFileByVersion(String productVersionUuid);

    /**
     * 根据产品版本的删除历史文件
     *
     * @param productVersionUuid
     * @return
     */
    void deleteFileHistoryByVersion(String productVersionUuid);

    /**
     * 判断当前文件是否存在子节点
     *
     * @param parentUuid
     * @param isHistory
     * @return
     */
    Boolean hasChild(String parentUuid, Boolean isHistory);

}